import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:张熳
 * Date:2025-09-27
 * Time:21:42
 */
public class Test {
    public static void main(String[] args) {
        String s1 = "hello world";
        String s2 = "eord";
        ArrayList<Character> list = new ArrayList<>();

        for (int i = 0; i < s1.length(); i++) {
            char ch = s1.charAt(i);
            if (!s2.contains(ch+"")) {
                list.add(ch);
            }
        }
        //System.out.println(list); 打印方法1

        //打印方法2
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i));
        }
        System.out.println();
    }
    public static void main9(String[] args) {
        //反向遍历
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);

        System.out.println("===使用ListIterator迭代器 扩展");
        ListIterator<Integer> it = list.listIterator(list.size());
        while (it.hasPrevious()) {
            System.out.print(it.previous() + " ");//5 4 3 2 1
        }
        System.out.println();
    }
    public static void main8(String[] args) {
        //使用迭代器
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);

        System.out.println("===使用ListIterator迭代器遍历");
        ListIterator<Integer> it = list.listIterator();
        while (it.hasNext()) {
            System.out.print(it.next() + " ");
        }
        System.out.println();
    }
    public static void main7(String[] args) {
        //使用迭代器
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);

        System.out.println("===使用iterator迭代器遍历");
        Iterator<Integer> it = list.iterator();
        //System.out.println(it);
        while (it.hasNext()) {
            System.out.print(it.next() + " ");
        }
        System.out.println();
    }
    public static void main6(String[] args) {
        //for-each
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);

        int size = list.size();
        System.out.println("===for-each遍历===");
        for (Integer x : list) { //这里可以写成 int x，相当于进行 拆箱 操作
            System.out.print(x + " ");
        }
        System.out.println();
    }
    public static void main5(String[] args) {
        //for循环遍历
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);

        int size = list.size();//size方法获取长度
        System.out.println("===for循环遍历===");
        for (int i = 0; i < size; i++) {
            System.out.print(list.get(i) + " ");//get方法获取表中元素
        }
        System.out.println();
    }
    public static void main4(String[] args) {
        ArrayList<Integer> test = new ArrayList<>();
        test.add(1);
        test.add(2);
        test.add(3);
        test.add(4);
        test.add(5);
        System.out.println(test);

        List<Integer> list = test.subList(0,3);//[0,3)
        System.out.println(list);

        System.out.println("=======");
        test.set(0,99);
        System.out.println(test);
        System.out.println(list);
    }
    public static void main3(String[] args) {
        //addAll
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        ArrayList<Integer> list1 = new ArrayList<>();
        list1.add(11);
        list1.add(12);
        list1.add(13);
        list1.addAll(list);
        System.out.println(list1);//11, 12, 13, 1, 2, 3

        /*list1.remove(1);
        System.out.println(list1);*/

        //删除第一个遇到的 o（Object类 类型的引用）
        //list1.remove(new Integer(13));
        System.out.println(list1);

        //判断 o 是否在线性表中/线性表中是否包含 o
        boolean ret = list1.contains(11);
        System.out.println(ret);//true
    }
    public static void main2(String[] args) {
        //无参数构造方法
        ArrayList<Integer> list = new ArrayList<>();
        list.add(10);
        list.add(11);
        list.add(2,13);
        System.out.println(list);
    }
    public static void main1(String[] args) {
        //带参数构造方法
        ArrayList<Integer> list = new ArrayList<>(10);
        list.add(1);
        list.add(2);
        list.add(3);
        //list.add("hello");
        System.out.println(list);//ArrayList泛型类中重写了toString方法

        //利用其他的Collection 构建Arraylist
        ArrayList<Integer> list1 = new ArrayList<>(list);
        System.out.println(list1);

        ArrayList<String> list2 = new ArrayList<>();
        //ArrayList<Integer> list3 = new ArrayList<>(list2);
        
    }
}
